package com.godGuang.servser;

import com.godGuang.domain.Content;
import com.godGuang.domain.ContentEnshrineMiddle;
import com.godGuang.domain.Disease;
import com.godGuang.domain.Enshrine;

import java.util.List;

/**
 * @author : 段敏强
 * @className : ContentService
 * @description : 描述说明该类的功能
 * @createTime : 2024/01/08 14:15
 */

/**
 * 发布内容接口
 */

public interface ContentService {
    /**
     * 向内容列表中添加内容
     *
     * @param content 要添加的内容
     */
    void addContent(Content content);

    /**
     * 根据分类id创建内容列表
     *
     * @param catalogueId 分类id
     * @return 内容列表
     */
    List<Content> createContentList(Integer catalogueId);


    /**
     * 根据分类id创建内容列表
     *
     * @param catalogueId 分类id
     * @return 内容列表
     */
    List<Disease> diseaseList(String catalogueId);

    /**
     * 获取所有内容列表
     *
     * @return 内容列表
     */
    List<Content> list();

    /**
     * 根据内容ID获取内容
     *
     * @param contentId 内容ID
     * @return 对应的内容
     */
    Content contentById(String contentId);

    /**
     * 将ContentEnshrineMiddle对象封装成ContentEnshrineMiddleData对象
     *
     * @param contentEnshrineMiddle ContentEnshrineMiddle对象
     * @return ContentEnshrineMiddleData对象
     */
    ContentEnshrineMiddle contentEnshrineMiddleData(ContentEnshrineMiddle contentEnshrineMiddle);

    /**
     * 将内容封印到中间层，并添加到当前实例中
     *
     * @param enshrine 要添加的封印对象
     */
    void contentEnshrineMiddleAdd(Enshrine enshrine);

    /**
     * 获取指定用户的收藏夹列表
     *
     * @param userId 用户ID
     * @return 返回用户的收藏夹列表
     */
    List<Content> myCollectionList(String userId);

    /**
     * 获取指定用户的个人发布列表
     *
     * @param userId 用户ID
     * @return 用户个人发布列表
     */
    List<Content> personalPublishingList(String userId);
}
